<?php
namespace app\admin\controller;

use think\Db;
use think\Log;
use think\Config;
use think\Session;
use think\Controller;
use app\admin\model\Login as LoginModel; 

//引入模型层Login类，重命名预防冲突
class Login extends Controller
{
    //===================
    //1.登录页面加载方法
    //===================
    public function index()
    {
      return $this->fetch();
    }
    //====================
    //2.登录判断及跳转方法
    //====================
    public function login(){
      
        //登录状态返回码
        define("NO_USER", 0);
        define("SUCCESS", 1);     
        define("PASSWORD_ERROR", 2);
        define("CAPTCHA_ERROR", 3);
        define("LOCK_ERROR", 4);
        
        //登录日志初始化
        Log::init([
            'type'  =>  'File',
            'path'  =>  APP_PATH.'logs/login/'
        ]);

        //判断表单是否Post传值
        if(request()->isPost()){
          
          //实例化模型层对象
          $res = LoginModel::login(input("user_name"),input("user_password"),input("captcha"),input("check_me"));
          $array = json_decode($res,true);
          
          //根据登录情况判断

          switch($array['status']){
            
            case NO_USER:
              return $this->error('登录失败，用户名或者密码错误');
              break;
              
            //登录成功
            case SUCCESS:
            
              //记录登录日志
              $user_type = Session::get('user_type');
              Log::write('登录用户:'.input("user_name").'用户类型:'.$user_type,'log');
              
              //登录时间
              Db::name("User")
                ->where('user_name', input("user_name"))
                ->update(['last_login_time' => date("Y-m-d H:i:s",time())]);
              
              //角色判断,页面跳转
              return $this->success('登录成功，正在跳转',url('Index/index', ['user_type' => $user_type]));
              break;
               
            case PASSWORD_ERROR:
              $limit_times = $array['data']['limit_times'];
              return $this->error("登录失败，密码错误,还可以输入{$limit_times}次");
              break;
            case CAPTCHA_ERROR:
              return $this->error('登录失败，验证码错误');
              break;
            case LOCK_ERROR:
              return $this->error("抱歉！您的账户暂时被锁定");
              break;
            default:
              return $this->error('登录失败，未知的返回代码');
            }
        }
    }
    //================
    //3.注销及跳转方法
    //================
    public function logout(){
      session(null);
      return $this->success('退出成功,正在跳转',url('Login/index'));
    }
    
    //===================
    //4.获取验证码方法
    //===================
    public function getLoginCaptcha()
    {
        //获取验证码
        $code = getCaptcha();
    }
}